package com.dupt.system.service;

import java.io.IOException;
import java.util.List;

import com.dupt.system.domain.MaterialDetial;
import com.dupt.system.domain.param.MaterialParam;
import com.dupt.system.domain.vo.MaterialDetialVo;
import org.springframework.web.multipart.MultipartFile;

/**
 * 物料明细Service接口
 * 
 * @author zhuanyusun
 * @date 2025-06-09
 */
public interface IMaterialDetialService
{
    /**
     * 查询物料明细
     *
     * @param materialDetialId 物料明细主键
     * @return 物料明细
     */
    public MaterialDetialVo selectMaterialDetialByMaterialDetialId(Long materialDetialId);


    /**
     * 钉钉查询物料明细列表
     *
     * @param materialDetial 物料明细
     * @return 物料明细集合
     */
    public List<MaterialDetial> selectMaterialDetialListOfDingTalk(MaterialDetial materialDetial);

    /**
     * 查询物料明细列表
     * 
     * @param materialDetial 物料明细
     * @return 物料明细集合
     */
    public List<MaterialDetialVo> selectMaterialDetialList(MaterialDetial materialDetial);

    /**
     * 新增物料明细
     * 
     * @param materialDetialCo 物料明细
     * @return 结果
     */
    public int insertMaterialDetial(String materialDetialCo, List<MultipartFile> files) throws IOException;


    /**
     * 修改物料明细
     * 
     * @param materialDetialVo 物料明细
     * @return 结果
     */
    public int updateMaterialDetial(String materialDetialVo, List<MultipartFile> files) throws IOException;

    /**
     * 批量修改物料明细
     *
     * @param materialDetialList 物料明细
     * @return 结果
     */
//    public int batchUpdateMaterialDetail(List<MaterialDetial> materialDetialList);

    /**
     * 批量删除物料明细
     * 
     * @param materialDetialIds 需要删除的物料明细主键集合
     * @return 结果
     */
    public int deleteMaterialDetialByMaterialDetialIds(Long[] materialDetialIds);

    /**
     * 删除物料明细信息
     * 
     * @param materialDetialId 物料明细主键
     * @return 结果
     */
//    public int deleteMaterialDetialByMaterialDetialId(Long materialDetialId);

    /**
     * 根据物料编号查询物料明细
     *
     * @param materialCode 物料编号
     * @return 物料明细
     */
//    public List<MaterialDetial> selectMaterialDetialByMaterialCode(String materialCode);

    /**
     * 根据物料内部编号查询物料明细
     *
     * @param materialInnerCode 物料内部编号
     * @return 物料明细
     */
//    public List<MaterialDetial> selectMaterialDetialByMaterialInnerCode(String materialInnerCode);

    /**
     * 查询即时库存物料明细列表
     *
     * @param materialDetial 物料明细
     * @return 物料明细集合
     */
    //public List<MaterialDetial> selectImmediateList(MaterialDetial materialDetial);

    /**
     * 批量导入物料明细
     *
     * @param detialList 物料明细
     * @param updateSupport 是否更新
     * @param operName 操作人员
     * @return 结果
     */
//    public String importMaterialDetial(List<MaterialParam> detialList, boolean updateSupport, String operName);
}
